home *** CD-ROM | disk | FTP | other *** search
- package java.util;
-
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import sun.util.calendar.BaseCalendar;
- import sun.util.calendar.CalendarDate;
- import sun.util.calendar.CalendarSystem;
- import sun.util.calendar.CalendarUtils;
- import sun.util.calendar.Era;
- import sun.util.calendar.Gregorian;
- import sun.util.calendar.LocalGregorianCalendar;
- import sun.util.calendar.ZoneInfo;
- import sun.util.resources.LocaleData;
-
- class JapaneseImperialCalendar extends Calendar {
- public static final int BEFORE_MEIJI = 0;
- public static final int MEIJI = 1;
- public static final int TAISHO = 2;
- public static final int SHOWA = 3;
- public static final int HEISEI = 4;
- private static final int EPOCH_OFFSET = 719163;
- private static final int EPOCH_YEAR = 1970;
- private static final int ONE_SECOND = 1000;
- private static final int ONE_MINUTE = 60000;
- private static final int ONE_HOUR = 3600000;
- private static final long ONE_DAY = 86400000L;
- private static final long ONE_WEEK = 604800000L;
- private static final LocalGregorianCalendar jcal = (LocalGregorianCalendar)CalendarSystem.forName("japanese");
- private static final Gregorian gcal = CalendarSystem.getGregorianCalendar();
- private static final Era BEFORE_MEIJI_ERA = new Era("BeforeMeiji", "BM", Long.MIN_VALUE, false);
- private static final Era[] eras;
- private static final long[] sinceFixedDates;
- static final int[] MIN_VALUES = new int[]{0, -292275055, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, -46800000, 0};
- static final int[] LEAST_MAX_VALUES = new int[]{0, 0, 0, 0, 4, 28, 0, 7, 4, 1, 11, 23, 59, 59, 999, 50400000, 1200000};
- static final int[] MAX_VALUES = new int[]{0, 292278994, 11, 53, 6, 31, 366, 7, 6, 1, 11, 23, 59, 59, 999, 50400000, 7200000};
- private static final long serialVersionUID = -3364572813905467929L;
- private transient LocalGregorianCalendar.Date jdate;
- private transient int[] zoneOffsets;
- private transient int[] originalFields;
- private transient long cachedFixedDate = Long.MIN_VALUE;
-
- public JapaneseImperialCalendar(TimeZone var1, Locale var2) {
- super(var1, var2);
- this.jdate = jcal.newCalendarDate(var1);
- this.setTimeInMillis(System.currentTimeMillis());
- }
-
- public boolean equals(Object var1) {
- return var1 instanceof JapaneseImperialCalendar && super.equals(var1);
- }
-
- public int hashCode() {
- return super.hashCode() ^ this.jdate.hashCode();
- }
-
- public void add(int var1, int var2) {
- if (var2 != 0) {
- if (var1 >= 0 && var1 < 15) {
- this.complete();
- if (var1 == 1) {
- LocalGregorianCalendar.Date var3 = (LocalGregorianCalendar.Date)this.jdate.clone();
- var3.addYear(var2);
- this.pinDayOfMonth(var3);
- this.set(0, getEraIndex(var3));
- this.set(1, var3.getYear());
- this.set(2, var3.getMonth() - 1);
- this.set(5, var3.getDayOfMonth());
- } else if (var1 == 2) {
- LocalGregorianCalendar.Date var12 = (LocalGregorianCalendar.Date)this.jdate.clone();
- var12.addMonth(var2);
- this.pinDayOfMonth(var12);
- this.set(0, getEraIndex(var12));
- this.set(1, var12.getYear());
- this.set(2, var12.getMonth() - 1);
- this.set(5, var12.getDayOfMonth());
- } else if (var1 == 0) {
- int var13 = this.internalGet(0) + var2;
- if (var13 < 0) {
- var13 = 0;
- } else if (var13 > eras.length - 1) {
- var13 = eras.length - 1;
- }
-
- this.set(0, var13);
- } else {
- long var14 = (long)var2;
- long var5 = 0L;
- switch (var1) {
- case 3:
- case 4:
- case 8:
- var14 *= 7L;
- case 5:
- case 6:
- case 7:
- case 14:
- default:
- break;
- case 9:
- var14 = (long)(var2 / 2);
- var5 = (long)(12 * (var2 % 2));
- break;
- case 10:
- case 11:
- var14 *= 3600000L;
- break;
- case 12:
- var14 *= 60000L;
- break;
- case 13:
- var14 *= 1000L;
- }
-
- if (var1 >= 10) {
- this.setTimeInMillis(this.time + var14);
- return;
- }
-
- long var7 = this.cachedFixedDate;
- var5 += (long)this.internalGet(11);
- var5 *= 60L;
- var5 += (long)this.internalGet(12);
- var5 *= 60L;
- var5 += (long)this.internalGet(13);
- var5 *= 1000L;
- var5 += (long)this.internalGet(14);
- if (var5 >= 86400000L) {
- ++var7;
- var5 -= 86400000L;
- } else if (var5 < 0L) {
- --var7;
- var5 += 86400000L;
- }
-
- var7 += var14;
- int var9 = this.internalGet(15) + this.internalGet(16);
- this.setTimeInMillis((var7 - 719163L) * 86400000L + var5 - (long)var9);
- var9 -= this.internalGet(15) + this.internalGet(16);
- if (var9 != 0) {
- this.setTimeInMillis(this.time + (long)var9);
- long var10 = this.cachedFixedDate;
- if (var10 != var7) {
- this.setTimeInMillis(this.time - (long)var9);
- }
- }
- }
-
- } else {
- throw new IllegalArgumentException();
- }
- }
- }
-
- public void roll(int var1, boolean var2) {
- this.roll(var1, var2 ? 1 : -1);
- }
-
- public void roll(int var1, int var2) {
- if (var2 != 0) {
- if (var1 >= 0 && var1 < 15) {
- this.complete();
- int var3 = this.getMinimum(var1);
- int var4 = this.getMaximum(var1);
- switch (var1) {
- case 0:
- case 9:
- case 12:
- case 13:
- case 14:
- default:
- break;
- case 1:
- var3 = this.getActualMinimum(var1);
- var4 = this.getActualMaximum(var1);
- break;
- case 2:
- if (!this.isTransitionYear(this.jdate.getNormalizedYear())) {
- int var30 = this.jdate.getYear();
- if (var30 == this.getMaximum(1)) {
- LocalGregorianCalendar.Date var39 = jcal.getCalendarDate(this.time, this.getZone());
- LocalGregorianCalendar.Date var49 = jcal.getCalendarDate(Long.MAX_VALUE, this.getZone());
- var4 = ((CalendarDate)var49).getMonth() - 1;
- int var60 = getRolledValue(this.internalGet(var1), var2, var3, var4);
- if (var60 == var4) {
- ((CalendarDate)var39).addYear(-400);
- ((CalendarDate)var39).setMonth(var60 + 1);
- if (((CalendarDate)var39).getDayOfMonth() > ((CalendarDate)var49).getDayOfMonth()) {
- ((CalendarDate)var39).setDayOfMonth(((CalendarDate)var49).getDayOfMonth());
- jcal.normalize(var39);
- }
-
- if (((CalendarDate)var39).getDayOfMonth() == ((CalendarDate)var49).getDayOfMonth() && ((CalendarDate)var39).getTimeOfDay() > ((CalendarDate)var49).getTimeOfDay()) {
- ((CalendarDate)var39).setMonth(var60 + 1);
- ((CalendarDate)var39).setDayOfMonth(((CalendarDate)var49).getDayOfMonth() - 1);
- jcal.normalize(var39);
- var60 = ((CalendarDate)var39).getMonth() - 1;
- }
-
- this.set(5, ((CalendarDate)var39).getDayOfMonth());
- }
-
- this.set(2, var60);
- } else if (var30 == this.getMinimum(1)) {
- LocalGregorianCalendar.Date var40 = jcal.getCalendarDate(this.time, this.getZone());
- LocalGregorianCalendar.Date var50 = jcal.getCalendarDate(Long.MIN_VALUE, this.getZone());
- var3 = ((CalendarDate)var50).getMonth() - 1;
- int var61 = getRolledValue(this.internalGet(var1), var2, var3, var4);
- if (var61 == var3) {
- ((CalendarDate)var40).addYear(400);
- ((CalendarDate)var40).setMonth(var61 + 1);
- if (((CalendarDate)var40).getDayOfMonth() < ((CalendarDate)var50).getDayOfMonth()) {
- ((CalendarDate)var40).setDayOfMonth(((CalendarDate)var50).getDayOfMonth());
- jcal.normalize(var40);
- }
-
- if (((CalendarDate)var40).getDayOfMonth() == ((CalendarDate)var50).getDayOfMonth() && ((CalendarDate)var40).getTimeOfDay() < ((CalendarDate)var50).getTimeOfDay()) {
- ((CalendarDate)var40).setMonth(var61 + 1);
- ((CalendarDate)var40).setDayOfMonth(((CalendarDate)var50).getDayOfMonth() + 1);
- jcal.normalize(var40);
- var61 = ((CalendarDate)var40).getMonth() - 1;
- }
-
- this.set(5, ((CalendarDate)var40).getDayOfMonth());
- }
-
- this.set(2, var61);
- } else {
- int var41 = (this.internalGet(2) + var2) % 12;
- if (var41 < 0) {
- var41 += 12;
- }
-
- this.set(2, var41);
- int var51 = this.monthLength(var41);
- if (this.internalGet(5) > var51) {
- this.set(5, var51);
- }
- }
- } else {
- int var31 = getEraIndex(this.jdate);
- CalendarDate var42 = null;
- if (this.jdate.getYear() == 1) {
- var42 = eras[var31].getSinceDate();
- var3 = var42.getMonth() - 1;
- } else if (var31 < eras.length - 1) {
- var42 = eras[var31 + 1].getSinceDate();
- if (var42.getYear() == this.jdate.getNormalizedYear()) {
- var4 = var42.getMonth() - 1;
- if (var42.getDayOfMonth() == 1) {
- --var4;
- }
- }
- }
-
- if (var3 == var4) {
- return;
- }
-
- int var52 = getRolledValue(this.internalGet(var1), var2, var3, var4);
- this.set(2, var52);
- if (var52 == var3) {
- if ((var42.getMonth() != 1 || var42.getDayOfMonth() != 1) && this.jdate.getDayOfMonth() < var42.getDayOfMonth()) {
- this.set(5, var42.getDayOfMonth());
- }
- } else if (var52 == var4 && var42.getMonth() - 1 == var52) {
- int var62 = var42.getDayOfMonth();
- if (this.jdate.getDayOfMonth() >= var62) {
- this.set(5, var62 - 1);
- }
- }
- }
-
- return;
- case 3:
- int var29 = this.jdate.getNormalizedYear();
- var4 = this.getActualMaximum(3);
- this.set(7, this.internalGet(7));
- int var38 = this.internalGet(3);
- int var47 = var38 + var2;
- if (this.isTransitionYear(this.jdate.getNormalizedYear())) {
- long var58 = this.cachedFixedDate;
- long var69 = var58 - (long)(7 * (var38 - var3));
- LocalGregorianCalendar.Date var74 = getCalendarDate(var69);
- if (var74.getEra() != this.jdate.getEra() || var74.getYear() != this.jdate.getYear()) {
- ++var3;
- }
-
- var58 += (long)(7 * (var4 - var38));
- jcal.getCalendarDateFromFixedDate(var74, var58);
- if (var74.getEra() != this.jdate.getEra() || var74.getYear() != this.jdate.getYear()) {
- --var4;
- }
-
- var47 = getRolledValue(var38, var2, var3, var4) - 1;
- var74 = getCalendarDate(var69 + (long)(var47 * 7));
- this.set(2, var74.getMonth() - 1);
- this.set(5, var74.getDayOfMonth());
- return;
- }
-
- int var57 = this.jdate.getYear();
- if (var57 == this.getMaximum(1)) {
- var4 = this.getActualMaximum(3);
- } else if (var57 == this.getMinimum(1)) {
- var3 = this.getActualMinimum(3);
- var4 = this.getActualMaximum(3);
- if (var47 > var3 && var47 < var4) {
- this.set(3, var47);
- return;
- }
- }
-
- if (var47 > var3 && var47 < var4) {
- this.set(3, var47);
- return;
- }
-
- long var65 = this.cachedFixedDate;
- long var72 = var65 - (long)(7 * (var38 - var3));
- if (var57 != this.getMinimum(1)) {
- if (gcal.getYearFromFixedDate(var72) != var29) {
- ++var3;
- }
- } else {
- LocalGregorianCalendar.Date var76 = jcal.getCalendarDate(Long.MIN_VALUE, this.getZone());
- if (var72 < jcal.getFixedDate(var76)) {
- ++var3;
- }
- }
-
- var65 += (long)(7 * (var4 - this.internalGet(3)));
- if (gcal.getYearFromFixedDate(var65) != var29) {
- --var4;
- }
- break;
- case 4:
- boolean var28 = this.isTransitionYear(this.jdate.getNormalizedYear());
- int var37 = this.internalGet(7) - this.getFirstDayOfWeek();
- if (var37 < 0) {
- var37 += 7;
- }
-
- long var46 = this.cachedFixedDate;
- long var64;
- int var71;
- if (var28) {
- var64 = this.getFixedDateMonth1(this.jdate, var46);
- var71 = this.actualMonthLength();
- } else {
- var64 = var46 - (long)this.internalGet(5) + 1L;
- var71 = jcal.getMonthLength(this.jdate);
- }
-
- LocalGregorianCalendar var77 = jcal;
- long var73 = LocalGregorianCalendar.getDayOfWeekDateOnOrBefore(var64 + 6L, this.getFirstDayOfWeek());
- if ((int)(var73 - var64) >= this.getMinimalDaysInFirstWeek()) {
- var73 -= 7L;
- }
-
- var4 = this.getActualMaximum(var1);
- int var14 = getRolledValue(this.internalGet(var1), var2, 1, var4) - 1;
- long var15 = var73 + (long)(var14 * 7) + (long)var37;
- if (var15 < var64) {
- var15 = var64;
- } else if (var15 >= var64 + (long)var71) {
- var15 = var64 + (long)var71 - 1L;
- }
-
- this.set(5, (int)(var15 - var64) + 1);
- return;
- case 5:
- if (this.isTransitionYear(this.jdate.getNormalizedYear())) {
- long var27 = this.getFixedDateMonth1(this.jdate, this.cachedFixedDate);
- int var45 = getRolledValue((int)(this.cachedFixedDate - var27), var2, 0, this.actualMonthLength() - 1);
- LocalGregorianCalendar.Date var56 = getCalendarDate(var27 + (long)var45);
- if ($assertionsDisabled || getEraIndex(var56) == this.internalGetEra() && var56.getYear() == this.internalGet(1) && var56.getMonth() - 1 == this.internalGet(2)) {
- this.set(5, var56.getDayOfMonth());
- return;
- }
-
- throw new AssertionError();
- }
-
- var4 = jcal.getMonthLength(this.jdate);
- break;
- case 6:
- var4 = this.getActualMaximum(var1);
- if (this.isTransitionYear(this.jdate.getNormalizedYear())) {
- int var26 = getRolledValue(this.internalGet(6), var2, var3, var4);
- long var36 = this.cachedFixedDate - (long)this.internalGet(6);
- LocalGregorianCalendar.Date var55 = getCalendarDate(var36 + (long)var26);
- if ($assertionsDisabled || getEraIndex(var55) == this.internalGetEra() && var55.getYear() == this.internalGet(1)) {
- this.set(2, var55.getMonth() - 1);
- this.set(5, var55.getDayOfMonth());
- return;
- }
-
- throw new AssertionError();
- }
- break;
- case 7:
- int var25 = this.jdate.getNormalizedYear();
- if (!this.isTransitionYear(var25) && !this.isTransitionYear(var25 - 1)) {
- int var33 = this.internalGet(3);
- if (var33 > 1 && var33 < 52) {
- this.set(3, this.internalGet(3));
- var4 = 7;
- break;
- }
- }
-
- var2 %= 7;
- if (var2 == 0) {
- return;
- }
-
- long var34 = this.cachedFixedDate;
- LocalGregorianCalendar var10000 = jcal;
- long var54 = LocalGregorianCalendar.getDayOfWeekDateOnOrBefore(var34, this.getFirstDayOfWeek());
- var34 += (long)var2;
- if (var34 < var54) {
- var34 += 7L;
- } else if (var34 >= var54 + 7L) {
- var34 -= 7L;
- }
-
- LocalGregorianCalendar.Date var68 = getCalendarDate(var34);
- this.set(0, getEraIndex(var68));
- this.set(var68.getYear(), var68.getMonth() - 1, var68.getDayOfMonth());
- return;
- case 8:
- var3 = 1;
- if (this.isTransitionYear(this.jdate.getNormalizedYear())) {
- long var23 = this.cachedFixedDate;
- long var44 = this.getFixedDateMonth1(this.jdate, var23);
- int var63 = this.actualMonthLength();
- int var67 = var63 % 7;
- var4 = var63 / 7;
- int var70 = (int)(var23 - var44) % 7;
- if (var70 < var67) {
- ++var4;
- }
-
- int var12 = getRolledValue(this.internalGet(var1), var2, var3, var4) - 1;
- var23 = var44 + (long)(var12 * 7) + (long)var70;
- LocalGregorianCalendar.Date var13 = getCalendarDate(var23);
- this.set(5, var13.getDayOfMonth());
- return;
- }
-
- int var22 = this.internalGet(5);
- int var32 = jcal.getMonthLength(this.jdate);
- int var43 = var32 % 7;
- var4 = var32 / 7;
- int var53 = (var22 - 1) % 7;
- if (var53 < var43) {
- ++var4;
- }
-
- this.set(7, this.internalGet(7));
- break;
- case 10:
- case 11:
- int var5 = var4 + 1;
- int var6 = this.internalGet(var1);
- int var7 = (var6 + var2) % var5;
- if (var7 < 0) {
- var7 += var5;
- }
-
- this.time += (long)(3600000 * (var7 - var6));
- LocalGregorianCalendar.Date var8 = jcal.getCalendarDate(this.time, this.getZone());
- if (this.internalGet(5) != ((CalendarDate)var8).getDayOfMonth()) {
- ((CalendarDate)var8).setEra(this.jdate.getEra());
- ((CalendarDate)var8).setDate(this.internalGet(1), this.internalGet(2) + 1, this.internalGet(5));
- if (var1 == 10) {
- assert this.internalGet(9) == 1;
-
- ((CalendarDate)var8).addHours(12);
- }
-
- this.time = jcal.getTime(var8);
- }
-
- int var9 = ((CalendarDate)var8).getHours();
- this.internalSet(var1, var9 % var5);
- if (var1 == 10) {
- this.internalSet(11, var9);
- } else {
- this.internalSet(9, var9 / 12);
- this.internalSet(10, var9 % 12);
- }
-
- int var10 = ((CalendarDate)var8).getZoneOffset();
- int var11 = ((CalendarDate)var8).getDaylightSaving();
- this.internalSet(15, var10 - var11);
- this.internalSet(16, var11);
- return;
- }
-
- this.set(var1, getRolledValue(this.internalGet(var1), var2, var3, var4));
- } else {
- throw new IllegalArgumentException();
- }
- }
- }
-
- public String getDisplayName(int var1, int var2, Locale var3) {
- if (!this.checkDisplayNameParams(var1, var2, 1, 2, var3, 647)) {
- return null;
- } else if (var1 != 1 || var2 != 1 && this.get(1) == 1 && this.get(0) != 0) {
- ResourceBundle var4 = LocaleData.getDateFormatData(var3);
- String var5 = null;
- String var6 = this.getKey(var1, var2);
- if (var6 != null) {
- String[] var7 = var4.getStringArray(var6);
- if (var1 == 1) {
- if (var7.length > 0) {
- var5 = var7[0];
- }
- } else {
- int var8 = this.get(var1);
- if (var1 == 0 && var8 >= var7.length && var8 < eras.length) {
- Era var9 = eras[var8];
- var5 = var2 == 1 ? var9.getAbbreviation() : var9.getName();
- } else {
- if (var1 == 7) {
- --var8;
- }
-
- var5 = var7[var8];
- }
- }
- }
-
- return var5;
- } else {
- return null;
- }
- }
-
- public Map<String, Integer> getDisplayNames(int var1, int var2, Locale var3) {
- if (!this.checkDisplayNameParams(var1, var2, 0, 2, var3, 647)) {
- return null;
- } else if (var2 == 0) {
- Map var4 = this.getDisplayNamesImpl(var1, 1, var3);
- if (var1 == 9) {
- return var4;
- } else {
- Map var5 = this.getDisplayNamesImpl(var1, 2, var3);
- if (var4 == null) {
- return var5;
- } else {
- if (var5 != null) {
- var4.putAll(var5);
- }
-
- return var4;
- }
- }
- } else {
- return this.getDisplayNamesImpl(var1, var2, var3);
- }
- }
-
- private Map<String, Integer> getDisplayNamesImpl(int var1, int var2, Locale var3) {
- ResourceBundle var4 = LocaleData.getDateFormatData(var3);
- String var5 = this.getKey(var1, var2);
- HashMap var6 = new HashMap();
- if (var5 != null) {
- String[] var7 = var4.getStringArray(var5);
- if (var1 == 1) {
- if (var7.length > 0) {
- var6.put(var7[0], 1);
- }
- } else {
- int var8 = var1 == 7 ? 1 : 0;
-
- for(int var9 = 0; var9 < var7.length; ++var9) {
- var6.put(var7[var9], var8 + var9);
- }
-
- if (var1 == 0 && var7.length < eras.length) {
- for(int var12 = var7.length; var12 < eras.length; ++var12) {
- Era var10 = eras[var12];
- String var11 = var2 == 1 ? var10.getAbbreviation() : var10.getName();
- var6.put(var11, var12);
- }
- }
- }
- }
-
- return var6.size() > 0 ? var6 : null;
- }
-
- private String getKey(int var1, int var2) {
- String var3 = JapaneseImperialCalendar.class.getName();
- StringBuilder var4 = new StringBuilder();
- switch (var1) {
- case 0:
- var4.append(var3);
- if (var2 == 1) {
- var4.append(".short");
- }
-
- var4.append(".Eras");
- break;
- case 1:
- var4.append(var3).append(".FirstYear");
- break;
- case 2:
- var4.append(var2 == 1 ? "MonthAbbreviations" : "MonthNames");
- case 3:
- case 4:
- case 5:
- case 6:
- case 8:
- default:
- break;
- case 7:
- var4.append(var2 == 1 ? "DayAbbreviations" : "DayNames");
- break;
- case 9:
- var4.append("AmPmMarkers");
- }
-
- return var4.length() > 0 ? var4.toString() : null;
- }
-
- public int getMinimum(int var1) {
- return MIN_VALUES[var1];
- }
-
- public int getMaximum(int var1) {
- switch (var1) {
- case 1:
- LocalGregorianCalendar.Date var2 = jcal.getCalendarDate(Long.MAX_VALUE, this.getZone());
- return Math.max(LEAST_MAX_VALUES[1], var2.getYear());
- default:
- return MAX_VALUES[var1];
- }
- }
-
- public int getGreatestMinimum(int var1) {
- return var1 == 1 ? 1 : MIN_VALUES[var1];
- }
-
- public int getLeastMaximum(int var1) {
- switch (var1) {
- case 1:
- return Math.min(LEAST_MAX_VALUES[1], this.getMaximum(1));
- default:
- return LEAST_MAX_VALUES[var1];
- }
- }
-
- public int getActualMinimum(int var1) {
- if (!isFieldSet(14, var1)) {
- return this.getMinimum(var1);
- } else {
- int var2 = 0;
- JapaneseImperialCalendar var3 = this.getNormalizedCalendar();
- LocalGregorianCalendar.Date var4 = jcal.getCalendarDate(var3.getTimeInMillis(), this.getZone());
- int var5 = getEraIndex(var4);
- switch (var1) {
- case 1:
- if (var5 > 0) {
- var2 = 1;
- long var15 = eras[var5].getSince(this.getZone());
- LocalGregorianCalendar.Date var18 = jcal.getCalendarDate(var15, this.getZone());
- var4.setYear(((CalendarDate)var18).getYear());
- jcal.normalize(var4);
-
- assert var4.isLeapYear() == ((CalendarDate)var18).isLeapYear();
-
- if (this.getYearOffsetInMillis(var4) < this.getYearOffsetInMillis(var18)) {
- ++var2;
- }
- } else {
- var2 = this.getMinimum(var1);
- LocalGregorianCalendar.Date var16 = jcal.getCalendarDate(Long.MIN_VALUE, this.getZone());
- int var17 = ((CalendarDate)var16).getYear();
- if (var17 > 400) {
- var17 -= 400;
- }
-
- var4.setYear(var17);
- jcal.normalize(var4);
- if (this.getYearOffsetInMillis(var4) < this.getYearOffsetInMillis(var16)) {
- ++var2;
- }
- }
- break;
- case 2:
- if (var5 > 1 && var4.getYear() == 1) {
- long var14 = eras[var5].getSince(this.getZone());
- LocalGregorianCalendar.Date var8 = jcal.getCalendarDate(var14, this.getZone());
- var2 = ((CalendarDate)var8).getMonth() - 1;
- if (var4.getDayOfMonth() < ((CalendarDate)var8).getDayOfMonth()) {
- ++var2;
- }
- }
- break;
- case 3:
- var2 = 1;
- LocalGregorianCalendar.Date var6 = jcal.getCalendarDate(Long.MIN_VALUE, this.getZone());
- ((CalendarDate)var6).addYear(400);
- jcal.normalize(var6);
- var4.setEra(((CalendarDate)var6).getEra());
- var4.setYear(((CalendarDate)var6).getYear());
- jcal.normalize(var4);
- long var7 = jcal.getFixedDate(var6);
- long var9 = jcal.getFixedDate(var4);
- int var11 = this.getWeekNumber(var7, var9);
- long var12 = var9 - (long)(7 * (var11 - 1));
- if (var12 < var7 || var12 == var7 && var4.getTimeOfDay() < ((CalendarDate)var6).getTimeOfDay()) {
- ++var2;
- }
- }
-
- return var2;
- }
- }
-
- public int getActualMaximum(int var1) {
- if ((130689 & 1 << var1) != 0) {
- return this.getMaximum(var1);
- } else {
- JapaneseImperialCalendar var3 = this.getNormalizedCalendar();
- LocalGregorianCalendar.Date var4 = var3.jdate;
- int var5 = var4.getNormalizedYear();
- int var6 = -1;
- switch (var1) {
- case 1:
- LocalGregorianCalendar.Date var25 = jcal.getCalendarDate(var3.getTimeInMillis(), this.getZone());
- int var42 = getEraIndex(var4);
- LocalGregorianCalendar.Date var35;
- if (var42 == eras.length - 1) {
- var35 = jcal.getCalendarDate(Long.MAX_VALUE, this.getZone());
- var6 = ((CalendarDate)var35).getYear();
- if (var6 > 400) {
- ((CalendarDate)var25).setYear(var6 - 400);
- }
- } else {
- var35 = jcal.getCalendarDate(eras[var42 + 1].getSince(this.getZone()) - 1L, this.getZone());
- var6 = ((CalendarDate)var35).getYear();
- ((CalendarDate)var25).setYear(var6);
- }
-
- jcal.normalize(var25);
- if (this.getYearOffsetInMillis(var25) > this.getYearOffsetInMillis(var35)) {
- --var6;
- }
- break;
- case 2:
- var6 = 11;
- if (this.isTransitionYear(var4.getNormalizedYear())) {
- int var23 = getEraIndex(var4);
- if (var4.getYear() != 1) {
- ++var23;
-
- assert var23 < eras.length;
- }
-
- long var34 = sinceFixedDates[var23];
- long var50 = var3.cachedFixedDate;
- if (var50 < var34) {
- LocalGregorianCalendar.Date var54 = (LocalGregorianCalendar.Date)var4.clone();
- jcal.getCalendarDateFromFixedDate(var54, var34 - 1L);
- var6 = var54.getMonth() - 1;
- }
- } else {
- LocalGregorianCalendar.Date var24 = jcal.getCalendarDate(Long.MAX_VALUE, this.getZone());
- if (var4.getEra() == var24.getEra() && var4.getYear() == var24.getYear()) {
- var6 = var24.getMonth() - 1;
- }
- }
- break;
- case 3:
- if (!this.isTransitionYear(var4.getNormalizedYear())) {
- LocalGregorianCalendar.Date var21 = jcal.getCalendarDate(Long.MAX_VALUE, this.getZone());
- if (var4.getEra() == var21.getEra() && var4.getYear() == var21.getYear()) {
- long var33 = jcal.getFixedDate(var21);
- long var49 = this.getFixedDateJan1(var21, var33);
- var6 = this.getWeekNumber(var49, var33);
- } else if (var4.getEra() == null && var4.getYear() == this.getMinimum(1)) {
- LocalGregorianCalendar.Date var32 = jcal.getCalendarDate(Long.MIN_VALUE, this.getZone());
- ((CalendarDate)var32).addYear(400);
- jcal.normalize(var32);
- var21.setEra(((CalendarDate)var32).getEra());
- var21.setDate(((CalendarDate)var32).getYear() + 1, 1, 1);
- jcal.normalize(var21);
- long var41 = jcal.getFixedDate(var32);
- long var53 = jcal.getFixedDate(var21);
- LocalGregorianCalendar var10000 = jcal;
- long var13 = LocalGregorianCalendar.getDayOfWeekDateOnOrBefore(var53 + 6L, this.getFirstDayOfWeek());
- int var15 = (int)(var13 - var53);
- if (var15 >= this.getMinimalDaysInFirstWeek()) {
- var13 -= 7L;
- }
-
- var6 = this.getWeekNumber(var41, var13);
- } else {
- Gregorian.Date var31 = gcal.newCalendarDate(TimeZone.NO_TIMEZONE);
- ((CalendarDate)var31).setDate(var4.getNormalizedYear(), 1, 1);
- int var39 = gcal.getDayOfWeek(var31);
- var39 -= this.getFirstDayOfWeek();
- if (var39 < 0) {
- var39 += 7;
- }
-
- var6 = 52;
- int var48 = var39 + this.getMinimalDaysInFirstWeek() - 1;
- if (var48 == 6 || var4.isLeapYear() && (var48 == 5 || var48 == 12)) {
- ++var6;
- }
- }
- } else {
- if (var3 == this) {
- var3 = (JapaneseImperialCalendar)var3.clone();
- }
-
- int var22 = this.getActualMaximum(6);
- var3.set(6, var22);
- var6 = var3.get(3);
- if (var6 == 1 && var22 > 7) {
- var3.add(3, -1);
- var6 = var3.get(3);
- }
- }
- break;
- case 4:
- LocalGregorianCalendar.Date var20 = jcal.getCalendarDate(Long.MAX_VALUE, this.getZone());
- if (var4.getEra() == var20.getEra() && var4.getYear() == var20.getYear()) {
- long var30 = jcal.getFixedDate(var20);
- long var47 = var30 - (long)var20.getDayOfMonth() + 1L;
- var6 = this.getWeekNumber(var47, var30);
- } else {
- Gregorian.Date var29 = gcal.newCalendarDate(TimeZone.NO_TIMEZONE);
- ((CalendarDate)var29).setDate(var4.getNormalizedYear(), var4.getMonth(), 1);
- int var37 = gcal.getDayOfWeek(var29);
- int var45 = gcal.getMonthLength(var29);
- var37 -= this.getFirstDayOfWeek();
- if (var37 < 0) {
- var37 += 7;
- }
-
- int var52 = 7 - var37;
- var6 = 3;
- if (var52 >= this.getMinimalDaysInFirstWeek()) {
- ++var6;
- }
-
- var45 -= var52 + 21;
- if (var45 > 0) {
- ++var6;
- if (var45 > 7) {
- ++var6;
- }
- }
- }
- break;
- case 5:
- var6 = jcal.getMonthLength(var4);
- break;
- case 6:
- if (this.isTransitionYear(var4.getNormalizedYear())) {
- int var18 = getEraIndex(var4);
- if (var4.getYear() != 1) {
- ++var18;
-
- assert var18 < eras.length;
- }
-
- long var26 = sinceFixedDates[var18];
- long var43 = var3.cachedFixedDate;
- Gregorian.Date var12 = gcal.newCalendarDate(TimeZone.NO_TIMEZONE);
- ((CalendarDate)var12).setDate(var4.getNormalizedYear(), 1, 1);
- if (var43 < var26) {
- var6 = (int)(var26 - gcal.getFixedDate(var12));
- } else {
- ((CalendarDate)var12).addYear(1);
- var6 = (int)(gcal.getFixedDate(var12) - var26);
- }
- } else {
- LocalGregorianCalendar.Date var19 = jcal.getCalendarDate(Long.MAX_VALUE, this.getZone());
- if (var4.getEra() == var19.getEra() && var4.getYear() == var19.getYear()) {
- long var28 = jcal.getFixedDate(var19);
- long var44 = this.getFixedDateJan1(var19, var28);
- var6 = (int)(var28 - var44) + 1;
- } else if (var4.getYear() == this.getMinimum(1)) {
- LocalGregorianCalendar.Date var27 = jcal.getCalendarDate(Long.MIN_VALUE, this.getZone());
- long var36 = jcal.getFixedDate(var27);
- ((CalendarDate)var27).addYear(1);
- ((CalendarDate)var27).setMonth(1).setDayOfMonth(1);
- jcal.normalize(var27);
- long var51 = jcal.getFixedDate(var27);
- var6 = (int)(var51 - var36);
- } else {
- var6 = jcal.getYearLength(var4);
- }
- }
- break;
- case 7:
- default:
- throw new ArrayIndexOutOfBoundsException(var1);
- case 8:
- int var9 = var4.getDayOfWeek();
- BaseCalendar.Date var10 = (BaseCalendar.Date)var4.clone();
- int var7 = jcal.getMonthLength(var10);
- var10.setDayOfMonth(1);
- jcal.normalize(var10);
- int var8 = var10.getDayOfWeek();
- int var11 = var9 - var8;
- if (var11 < 0) {
- var11 += 7;
- }
-
- var7 -= var11;
- var6 = (var7 + 6) / 7;
- }
-
- return var6;
- }
- }
-
- private final long getYearOffsetInMillis(CalendarDate var1) {
- long var2 = (jcal.getDayOfYear(var1) - 1L) * 86400000L;
- return var2 + var1.getTimeOfDay() - (long)var1.getZoneOffset();
- }
-
- public Object clone() {
- JapaneseImperialCalendar var1 = (JapaneseImperialCalendar)super.clone();
- var1.jdate = (LocalGregorianCalendar.Date)this.jdate.clone();
- var1.originalFields = null;
- var1.zoneOffsets = null;
- return var1;
- }
-
- public TimeZone getTimeZone() {
- TimeZone var1 = super.getTimeZone();
- this.jdate.setZone(var1);
- return var1;
- }
-
- public void setTimeZone(TimeZone var1) {
- super.setTimeZone(var1);
- this.jdate.setZone(var1);
- }
-
- protected void computeFields() {
- int var1 = 0;
- if (this.isPartiallyNormalized()) {
- var1 = this.getSetStateFields();
- int var2 = ~var1 & 131071;
- if (var2 != 0 || this.cachedFixedDate == Long.MIN_VALUE) {
- var1 |= this.computeFields(var2, var1 & 98304);
-
- assert var1 == 131071;
- }
- } else {
- var1 = 131071;
- this.computeFields(var1, 0);
- }
-
- this.setFieldsComputed(var1);
- }
-
- private int computeFields(int var1, int var2) {
- int var3 = 0;
- TimeZone var4 = this.getZone();
- if (this.zoneOffsets == null) {
- this.zoneOffsets = new int[2];
- }
-
- if (var2 != 98304) {
- if (var4 instanceof ZoneInfo) {
- var3 = ((ZoneInfo)var4).getOffsets(this.time, this.zoneOffsets);
- } else {
- var3 = var4.getOffset(this.time);
- this.zoneOffsets[0] = var4.getRawOffset();
- this.zoneOffsets[1] = var3 - this.zoneOffsets[0];
- }
- }
-
- if (var2 != 0) {
- if (isFieldSet(var2, 15)) {
- this.zoneOffsets[0] = this.internalGet(15);
- }
-
- if (isFieldSet(var2, 16)) {
- this.zoneOffsets[1] = this.internalGet(16);
- }
-
- var3 = this.zoneOffsets[0] + this.zoneOffsets[1];
- }
-
- long var5 = (long)var3 / 86400000L;
- int var7 = var3 % 86400000;
- var5 += this.time / 86400000L;
- var7 += (int)(this.time % 86400000L);
- if ((long)var7 >= 86400000L) {
- var7 = (int)((long)var7 - 86400000L);
- ++var5;
- } else {
- while(var7 < 0) {
- var7 = (int)((long)var7 + 86400000L);
- --var5;
- }
- }
-
- var5 += 719163L;
- if (var5 != this.cachedFixedDate || var5 < 0L) {
- jcal.getCalendarDateFromFixedDate(this.jdate, var5);
- this.cachedFixedDate = var5;
- }
-
- int var8 = getEraIndex(this.jdate);
- int var9 = this.jdate.getYear();
- this.internalSet(0, var8);
- this.internalSet(1, var9);
- int var10 = var1 | 3;
- int var11 = this.jdate.getMonth() - 1;
- int var12 = this.jdate.getDayOfMonth();
- if ((var1 & 164) != 0) {
- this.internalSet(2, var11);
- this.internalSet(5, var12);
- this.internalSet(7, this.jdate.getDayOfWeek());
- var10 |= 164;
- }
-
- if ((var1 & 32256) != 0) {
- if (var7 != 0) {
- int var13 = var7 / 3600000;
- this.internalSet(11, var13);
- this.internalSet(9, var13 / 12);
- this.internalSet(10, var13 % 12);
- int var14 = var7 % 3600000;
- this.internalSet(12, var14 / '\uea60');
- var14 %= 60000;
- this.internalSet(13, var14 / 1000);
- this.internalSet(14, var14 % 1000);
- } else {
- this.internalSet(11, 0);
- this.internalSet(9, 0);
- this.internalSet(10, 0);
- this.internalSet(12, 0);
- this.internalSet(13, 0);
- this.internalSet(14, 0);
- }
-
- var10 |= 32256;
- }
-
- if ((var1 & 98304) != 0) {
- this.internalSet(15, this.zoneOffsets[0]);
- this.internalSet(16, this.zoneOffsets[1]);
- var10 |= 98304;
- }
-
- if ((var1 & 344) != 0) {
- int var30 = this.jdate.getNormalizedYear();
- boolean var32 = this.isTransitionYear(this.jdate.getNormalizedYear());
- int var15;
- long var16;
- if (var32) {
- var16 = this.getFixedDateJan1(this.jdate, var5);
- var15 = (int)(var5 - var16) + 1;
- } else if (var30 == MIN_VALUES[1]) {
- LocalGregorianCalendar.Date var18 = jcal.getCalendarDate(Long.MIN_VALUE, this.getZone());
- var16 = jcal.getFixedDate(var18);
- var15 = (int)(var5 - var16) + 1;
- } else {
- var15 = (int)jcal.getDayOfYear(this.jdate);
- var16 = var5 - (long)var15 + 1L;
- }
-
- long var33 = var32 ? this.getFixedDateMonth1(this.jdate, var5) : var5 - (long)var12 + 1L;
- this.internalSet(6, var15);
- this.internalSet(8, (var12 - 1) / 7 + 1);
- int var20 = this.getWeekNumber(var16, var5);
- if (var20 != 0) {
- if (!var32) {
- if (var20 >= 52) {
- long var34 = var16 + 365L;
- if (this.jdate.isLeapYear()) {
- ++var34;
- }
-
- LocalGregorianCalendar var10000 = jcal;
- long var36 = LocalGregorianCalendar.getDayOfWeekDateOnOrBefore(var34 + 6L, this.getFirstDayOfWeek());
- int var38 = (int)(var36 - var34);
- if (var38 >= this.getMinimalDaysInFirstWeek() && var5 >= var36 - 7L) {
- var20 = 1;
- }
- }
- } else {
- LocalGregorianCalendar.Date var35 = (LocalGregorianCalendar.Date)this.jdate.clone();
- long var22;
- if (this.jdate.getYear() == 1) {
- var35.addYear(1);
- LocalGregorianCalendar var43 = jcal;
- var35.setMonth(1).setDayOfMonth(1);
- var22 = jcal.getFixedDate(var35);
- } else {
- int var24 = getEraIndex(var35) + 1;
- CalendarDate var39 = eras[var24].getSinceDate();
- var35.setEra(eras[var24]);
- var35.setDate(1, var39.getMonth(), var39.getDayOfMonth());
- jcal.normalize(var35);
- var22 = jcal.getFixedDate(var35);
- }
-
- LocalGregorianCalendar var42 = jcal;
- long var37 = LocalGregorianCalendar.getDayOfWeekDateOnOrBefore(var22 + 6L, this.getFirstDayOfWeek());
- int var41 = (int)(var37 - var22);
- if (var41 >= this.getMinimalDaysInFirstWeek() && var5 >= var37 - 7L) {
- var20 = 1;
- }
- }
- } else {
- long var21 = var16 - 1L;
- LocalGregorianCalendar.Date var25 = getCalendarDate(var21);
- long var23;
- if (!var32 && !this.isTransitionYear(var25.getNormalizedYear())) {
- var23 = var16 - 365L;
- if (var25.isLeapYear()) {
- --var23;
- }
- } else if (var32) {
- if (this.jdate.getYear() == 1) {
- if (var8 > 4) {
- CalendarDate var26 = eras[var8 - 1].getSinceDate();
- if (var30 == var26.getYear()) {
- var25.setMonth(var26.getMonth()).setDayOfMonth(var26.getDayOfMonth());
- }
- } else {
- LocalGregorianCalendar var10001 = jcal;
- var25.setMonth(1).setDayOfMonth(1);
- }
-
- jcal.normalize(var25);
- var23 = jcal.getFixedDate(var25);
- } else {
- var23 = var16 - 365L;
- if (var25.isLeapYear()) {
- --var23;
- }
- }
- } else {
- CalendarDate var40 = eras[getEraIndex(this.jdate)].getSinceDate();
- var25.setMonth(var40.getMonth()).setDayOfMonth(var40.getDayOfMonth());
- jcal.normalize(var25);
- var23 = jcal.getFixedDate(var25);
- }
-
- var20 = this.getWeekNumber(var23, var21);
- }
-
- this.internalSet(3, var20);
- this.internalSet(4, this.getWeekNumber(var33, var5));
- var10 |= 344;
- }
-
- return var10;
- }
-
- private final int getWeekNumber(long var1, long var3) {
- LocalGregorianCalendar var10000 = jcal;
- long var5 = LocalGregorianCalendar.getDayOfWeekDateOnOrBefore(var1 + 6L, this.getFirstDayOfWeek());
- int var7 = (int)(var5 - var1);
-
- assert var7 <= 7;
-
- if (var7 >= this.getMinimalDaysInFirstWeek()) {
- var5 -= 7L;
- }
-
- int var8 = (int)(var3 - var5);
- return var8 >= 0 ? var8 / 7 + 1 : CalendarUtils.floorDivide(var8, 7) + 1;
- }
-
- protected void computeTime() {
- if (!this.isLenient()) {
- if (this.originalFields == null) {
- this.originalFields = new int[17];
- }
-
- for(int var1 = 0; var1 < 17; ++var1) {
- int var2 = this.internalGet(var1);
- if (this.isExternallySet(var1) && (var2 < this.getMinimum(var1) || var2 > this.getMaximum(var1))) {
- throw new IllegalArgumentException(getFieldName(var1));
- }
-
- this.originalFields[var1] = var2;
- }
- }
-
- int var15 = this.selectFields();
- int var3;
- int var16;
- if (this.isSet(0)) {
- var3 = this.internalGet(0);
- var16 = this.isSet(1) ? this.internalGet(1) : 1;
- } else if (this.isSet(1)) {
- var3 = eras.length - 1;
- var16 = this.internalGet(1);
- } else {
- var3 = 3;
- var16 = 45;
- }
-
- long var4 = 0L;
- if (isFieldSet(var15, 11)) {
- var4 += (long)this.internalGet(11);
- } else {
- var4 += (long)this.internalGet(10);
- if (isFieldSet(var15, 9)) {
- var4 += (long)(12 * this.internalGet(9));
- }
- }
-
- var4 *= 60L;
- var4 += (long)this.internalGet(12);
- var4 *= 60L;
- var4 += (long)this.internalGet(13);
- var4 *= 1000L;
- var4 += (long)this.internalGet(14);
- long var6 = var4 / 86400000L;
-
- for(var4 %= 86400000L; var4 < 0L; --var6) {
- var4 += 86400000L;
- }
-
- var6 += this.getFixedDate(var3, var16, var15);
- long var8 = (var6 - 719163L) * 86400000L + var4;
- TimeZone var10 = this.getZone();
- if (this.zoneOffsets == null) {
- this.zoneOffsets = new int[2];
- }
-
- int var11 = var15 & 98304;
- if (var11 != 98304) {
- if (var10 instanceof ZoneInfo) {
- ((ZoneInfo)var10).getOffsetsByWall(var8, this.zoneOffsets);
- } else {
- var10.getOffsets(var8 - (long)var10.getRawOffset(), this.zoneOffsets);
- }
- }
-
- if (var11 != 0) {
- if (isFieldSet(var11, 15)) {
- this.zoneOffsets[0] = this.internalGet(15);
- }
-
- if (isFieldSet(var11, 16)) {
- this.zoneOffsets[1] = this.internalGet(16);
- }
- }
-
- var8 -= (long)(this.zoneOffsets[0] + this.zoneOffsets[1]);
- this.time = var8;
- int var12 = this.computeFields(var15 | this.getSetStateFields(), var11);
- if (!this.isLenient()) {
- for(int var13 = 0; var13 < 17; ++var13) {
- if (this.isExternallySet(var13) && this.originalFields[var13] != this.internalGet(var13)) {
- int var14 = this.internalGet(var13);
- System.arraycopy(this.originalFields, 0, this.fields, 0, this.fields.length);
- throw new IllegalArgumentException(getFieldName(var13) + "=" + var14 + ", expected " + this.originalFields[var13]);
- }
- }
- }
-
- this.setFieldsNormalized(var12);
- }
-
- private long getFixedDate(int var1, int var2, int var3) {
- int var4 = 0;
- int var5 = 1;
- if (isFieldSet(var3, 2)) {
- var4 = this.internalGet(2);
- if (var4 > 11) {
- var2 += var4 / 12;
- var4 %= 12;
- } else if (var4 < 0) {
- int[] var6 = new int[1];
- var2 += CalendarUtils.floorDivide(var4, 12, var6);
- var4 = var6[0];
- }
- } else if (var2 == 1 && var1 != 0) {
- CalendarDate var12 = eras[var1].getSinceDate();
- var4 = var12.getMonth() - 1;
- var5 = var12.getDayOfMonth();
- }
-
- if (var2 == MIN_VALUES[1]) {
- LocalGregorianCalendar.Date var13 = jcal.getCalendarDate(Long.MIN_VALUE, this.getZone());
- int var7 = ((CalendarDate)var13).getMonth() - 1;
- if (var4 < var7) {
- var4 = var7;
- }
-
- if (var4 == var7) {
- var5 = ((CalendarDate)var13).getDayOfMonth();
- }
- }
-
- LocalGregorianCalendar.Date var14 = jcal.newCalendarDate(TimeZone.NO_TIMEZONE);
- var14.setEra(var1 > 0 ? eras[var1] : null);
- var14.setDate(var2, var4 + 1, var5);
- jcal.normalize(var14);
- long var17 = jcal.getFixedDate(var14);
- if (isFieldSet(var3, 2)) {
- if (isFieldSet(var3, 5)) {
- if (this.isSet(5)) {
- var17 += (long)this.internalGet(5);
- var17 -= (long)var5;
- }
- } else if (isFieldSet(var3, 4)) {
- LocalGregorianCalendar var10000 = jcal;
- long var9 = LocalGregorianCalendar.getDayOfWeekDateOnOrBefore(var17 + 6L, this.getFirstDayOfWeek());
- if (var9 - var17 >= (long)this.getMinimalDaysInFirstWeek()) {
- var9 -= 7L;
- }
-
- if (isFieldSet(var3, 7)) {
- var10000 = jcal;
- var9 = LocalGregorianCalendar.getDayOfWeekDateOnOrBefore(var9 + 6L, this.internalGet(7));
- }
-
- var17 = var9 + (long)(7 * (this.internalGet(4) - 1));
- } else {
- int var18;
- if (isFieldSet(var3, 7)) {
- var18 = this.internalGet(7);
- } else {
- var18 = this.getFirstDayOfWeek();
- }
-
- int var10;
- if (isFieldSet(var3, 8)) {
- var10 = this.internalGet(8);
- } else {
- var10 = 1;
- }
-
- if (var10 >= 0) {
- LocalGregorianCalendar var22 = jcal;
- var17 = LocalGregorianCalendar.getDayOfWeekDateOnOrBefore(var17 + (long)(7 * var10) - 1L, var18);
- } else {
- int var11 = this.monthLength(var4, var2) + 7 * (var10 + 1);
- LocalGregorianCalendar var23 = jcal;
- var17 = LocalGregorianCalendar.getDayOfWeekDateOnOrBefore(var17 + (long)var11 - 1L, var18);
- }
- }
- } else if (isFieldSet(var3, 6)) {
- if (this.isTransitionYear(var14.getNormalizedYear())) {
- var17 = this.getFixedDateJan1(var14, var17);
- }
-
- var17 += (long)this.internalGet(6);
- --var17;
- } else {
- LocalGregorianCalendar var24 = jcal;
- long var19 = LocalGregorianCalendar.getDayOfWeekDateOnOrBefore(var17 + 6L, this.getFirstDayOfWeek());
- if (var19 - var17 >= (long)this.getMinimalDaysInFirstWeek()) {
- var19 -= 7L;
- }
-
- if (isFieldSet(var3, 7)) {
- int var20 = this.internalGet(7);
- if (var20 != this.getFirstDayOfWeek()) {
- var24 = jcal;
- var19 = LocalGregorianCalendar.getDayOfWeekDateOnOrBefore(var19 + 6L, var20);
- }
- }
-
- var17 = var19 + 7L * ((long)this.internalGet(3) - 1L);
- }
-
- return var17;
- }
-
- private final long getFixedDateJan1(LocalGregorianCalendar.Date var1, long var2) {
- Era var4 = var1.getEra();
- if (var1.getEra() != null && var1.getYear() == 1) {
- for(int var5 = getEraIndex(var1); var5 > 0; --var5) {
- CalendarDate var6 = eras[var5].getSinceDate();
- long var7 = gcal.getFixedDate(var6);
- if (var7 <= var2) {
- return var7;
- }
- }
- }
-
- Gregorian.Date var9 = gcal.newCalendarDate(TimeZone.NO_TIMEZONE);
- int var10001 = var1.getNormalizedYear();
- Gregorian var10002 = gcal;
- ((CalendarDate)var9).setDate(var10001, 1, 1);
- return gcal.getFixedDate(var9);
- }
-
- private final long getFixedDateMonth1(LocalGregorianCalendar.Date var1, long var2) {
- int var4 = getTransitionEraIndex(var1);
- if (var4 != -1) {
- long var5 = sinceFixedDates[var4];
- if (var5 <= var2) {
- return var5;
- }
- }
-
- return var2 - (long)var1.getDayOfMonth() + 1L;
- }
-
- private static final LocalGregorianCalendar.Date getCalendarDate(long var0) {
- LocalGregorianCalendar.Date var2 = jcal.newCalendarDate(TimeZone.NO_TIMEZONE);
- jcal.getCalendarDateFromFixedDate(var2, var0);
- return var2;
- }
-
- private final int monthLength(int var1, int var2) {
- return CalendarUtils.isGregorianLeapYear(var2) ? GregorianCalendar.LEAP_MONTH_LENGTH[var1] : GregorianCalendar.MONTH_LENGTH[var1];
- }
-
- private final int monthLength(int var1) {
- assert this.jdate.isNormalized();
-
- return this.jdate.isLeapYear() ? GregorianCalendar.LEAP_MONTH_LENGTH[var1] : GregorianCalendar.MONTH_LENGTH[var1];
- }
-
- private final int actualMonthLength() {
- int var1 = jcal.getMonthLength(this.jdate);
- int var2 = getTransitionEraIndex(this.jdate);
- if (var2 == -1) {
- long var3 = sinceFixedDates[var2];
- CalendarDate var5 = eras[var2].getSinceDate();
- if (var3 <= this.cachedFixedDate) {
- var1 -= var5.getDayOfMonth() - 1;
- } else {
- var1 = var5.getDayOfMonth() - 1;
- }
- }
-
- return var1;
- }
-
- private static final int getTransitionEraIndex(LocalGregorianCalendar.Date var0) {
- int var1 = getEraIndex(var0);
- CalendarDate var2 = eras[var1].getSinceDate();
- if (var2.getYear() == var0.getNormalizedYear() && var2.getMonth() == var0.getMonth()) {
- return var1;
- } else {
- if (var1 < eras.length - 1) {
- ++var1;
- var2 = eras[var1].getSinceDate();
- if (var2.getYear() == var0.getNormalizedYear() && var2.getMonth() == var0.getMonth()) {
- return var1;
- }
- }
-
- return -1;
- }
- }
-
- private final boolean isTransitionYear(int var1) {
- for(int var2 = eras.length - 1; var2 > 0; --var2) {
- int var3 = eras[var2].getSinceDate().getYear();
- if (var1 == var3) {
- return true;
- }
-
- if (var1 > var3) {
- break;
- }
- }
-
- return false;
- }
-
- private static final int getEraIndex(LocalGregorianCalendar.Date var0) {
- Era var1 = var0.getEra();
-
- for(int var2 = eras.length - 1; var2 > 0; --var2) {
- if (eras[var2] == var1) {
- return var2;
- }
- }
-
- return 0;
- }
-
- private final JapaneseImperialCalendar getNormalizedCalendar() {
- JapaneseImperialCalendar var1;
- if (this.isFullyNormalized()) {
- var1 = this;
- } else {
- var1 = (JapaneseImperialCalendar)this.clone();
- var1.setLenient(true);
- var1.complete();
- }
-
- return var1;
- }
-
- private final void pinDayOfMonth(LocalGregorianCalendar.Date var1) {
- int var2 = var1.getYear();
- int var3 = var1.getDayOfMonth();
- if (var2 != this.getMinimum(1)) {
- var1.setDayOfMonth(1);
- jcal.normalize(var1);
- int var4 = jcal.getMonthLength(var1);
- if (var3 > var4) {
- var1.setDayOfMonth(var4);
- } else {
- var1.setDayOfMonth(var3);
- }
-
- jcal.normalize(var1);
- } else {
- LocalGregorianCalendar.Date var9 = jcal.getCalendarDate(Long.MIN_VALUE, this.getZone());
- LocalGregorianCalendar.Date var5 = jcal.getCalendarDate(this.time, this.getZone());
- long var6 = var5.getTimeOfDay();
- var5.addYear(400);
- var5.setMonth(var1.getMonth());
- var5.setDayOfMonth(1);
- jcal.normalize(var5);
- int var8 = jcal.getMonthLength(var5);
- if (var3 > var8) {
- var5.setDayOfMonth(var8);
- } else if (var3 < var9.getDayOfMonth()) {
- var5.setDayOfMonth(var9.getDayOfMonth());
- } else {
- var5.setDayOfMonth(var3);
- }
-
- if (var5.getDayOfMonth() == var9.getDayOfMonth() && var6 < var9.getTimeOfDay()) {
- var5.setDayOfMonth(Math.min(var3 + 1, var8));
- }
-
- var1.setDate(var2, var5.getMonth(), var5.getDayOfMonth());
- }
-
- }
-
- private static final int getRolledValue(int var0, int var1, int var2, int var3) {
- assert var0 >= var2 && var0 <= var3;
-
- int var4 = var3 - var2 + 1;
- var1 %= var4;
- int var5 = var0 + var1;
- if (var5 > var3) {
- var5 -= var4;
- } else if (var5 < var2) {
- var5 += var4;
- }
-
- assert var5 >= var2 && var5 <= var3;
-
- return var5;
- }
-
- private final int internalGetEra() {
- return this.isSet(0) ? this.internalGet(0) : eras.length - 1;
- }
-
- private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
- var1.defaultReadObject();
- if (this.jdate == null) {
- this.jdate = jcal.newCalendarDate(this.getZone());
- this.cachedFixedDate = Long.MIN_VALUE;
- }
-
- }
-
- static {
- Era[] var0 = jcal.getEras();
- int var1 = var0.length + 1;
- eras = new Era[var1];
- sinceFixedDates = new long[var1];
- int var2 = 0;
- sinceFixedDates[var2] = gcal.getFixedDate(BEFORE_MEIJI_ERA.getSinceDate());
- eras[var2++] = BEFORE_MEIJI_ERA;
-
- for(Era var6 : var0) {
- CalendarDate var7 = var6.getSinceDate();
- sinceFixedDates[var2] = gcal.getFixedDate(var7);
- eras[var2++] = var6;
- }
-
- LEAST_MAX_VALUES[0] = MAX_VALUES[0] = eras.length - 1;
- int var15 = Integer.MAX_VALUE;
- int var16 = Integer.MAX_VALUE;
- Gregorian.Date var18 = gcal.newCalendarDate(TimeZone.NO_TIMEZONE);
-
- for(int var19 = 1; var19 < eras.length; ++var19) {
- long var20 = sinceFixedDates[var19];
- CalendarDate var9 = eras[var19].getSinceDate();
- ((CalendarDate)var18).setDate(var9.getYear(), 1, 1);
- long var10 = gcal.getFixedDate(var18);
- var16 = Math.min((int)(var10 - var20), var16);
- ((CalendarDate)var18).setDate(var9.getYear(), 12, 31);
- var10 = gcal.getFixedDate(var18) + 1L;
- var16 = Math.min((int)(var20 - var10), var16);
- LocalGregorianCalendar.Date var12 = getCalendarDate(var20 - 1L);
- int var13 = var12.getYear();
- if (var12.getMonth() != 1 || var12.getDayOfMonth() != 1) {
- --var13;
- }
-
- var15 = Math.min(var13, var15);
- }
-
- LEAST_MAX_VALUES[1] = var15;
- LEAST_MAX_VALUES[6] = var16;
- }
- }
-